//package com.yuyou.activity.group.service.service.impl;
//
//
//import java.awt.image.BufferedImage;
//import java.io.ByteArrayOutputStream;
//import java.util.concurrent.TimeUnit;
//
//import javax.imageio.ImageIO;
//
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.stereotype.Service;
//
//import sun.misc.BASE64Encoder;
//
//import com.google.code.kaptcha.Producer;
//import com.yuyou.activity.group.service.cons.CommCons;
//import com.yuyou.activity.group.service.mess.CaptchaMess;
//import com.yuyou.activity.group.service.service.ICaptchaService;
//import com.yuyou.activity.group.service.vo.resp.RespCaptcha;
//import com.yuyou.activity.util.bean.ResBoolSimpleInfo;
//import com.yuyou.activity.util.util.TokenUtil;
//
//
//@Service
//public class CaptchaServiceImpl implements ICaptchaService {
//	
//    private final static String CAPTCHA_OPS_STAT_KEY = "CAPTCHA_OPS_STAT:%s";
//	
//	@Autowired
//	private StringRedisTemplate stringRedisTemplate;
//	
//	@Autowired
//	private Producer producer;
//	
//	public RespCaptcha generCaptcha() throws Exception{
//		RespCaptcha res=new RespCaptcha();
//		
//        // 生成文字验证码   	  
//        String text = producer.createText();  
//        // 生成图片验证码  
//        ByteArrayOutputStream outputStream = null;   
//        BufferedImage image = producer.createImage(text);       
//        outputStream = new ByteArrayOutputStream();    
//        ImageIO.write(image, "jpg", outputStream);             
//        // 对字节数组Base64编码    
//        BASE64Encoder encoder = new BASE64Encoder();              
//        // 生成captcha的token  
//        String token=TokenUtil.GenerateToken();
//        res.setToken(token);
//        res.setImg(encoder.encode(outputStream.toByteArray()));
//		
//        stringRedisTemplate.opsForValue().set(token, text, 10, TimeUnit.MINUTES);
//		
//		return res;
//	}
//	
//
//	@Override
//	public ResBoolSimpleInfo<String> verifyCode(String token,String text) {
//		ResBoolSimpleInfo<String> res=new ResBoolSimpleInfo<String>();
//        if (StringUtils.isEmpty(token)) {        
//        	res.setSuccess(false);
//        	res.setMessage(CaptchaMess.ERR_CAPTCHA_EMPTY);
//        }
//        else if (StringUtils.isEmpty(text)) {   
//        	res.setSuccess(false);
//        	res.setMessage(CaptchaMess.ERR_CAPTCHA_EMPTY);
//        }else{
//            String val = (String) stringRedisTemplate.opsForValue().get(token);
//            if (val == null || !val.equalsIgnoreCase(text)) {
//            	res.setSuccess(false);
//            	res.setMessage(CaptchaMess.ERR_CAPTCHA_EXPIRE);
//            }else{
//            	res.setSuccess(true);
//            }
//        }
//        //清除
//        if(!StringUtils.isEmpty(token)){
//            stringRedisTemplate.delete(token);        	
//        }
//        return res;
//	}
//
//	@Override
//	public Long opsStat(String account) {
//        Long count = stringRedisTemplate.opsForValue().increment(String.format(CAPTCHA_OPS_STAT_KEY, account), 1);
//        stringRedisTemplate.expire(String.format(CAPTCHA_OPS_STAT_KEY, account), 10, TimeUnit.MINUTES);
//        return count;
//	}
//
//	@Override
//	public void cleanOptStat(String account) {
//		stringRedisTemplate.delete(String.format(CAPTCHA_OPS_STAT_KEY, account));
//		
//	}
//
//	@Override
//	public boolean needVerifyCode(String account) {
//        String val = (String) stringRedisTemplate.opsForValue().get(String.format(CAPTCHA_OPS_STAT_KEY, account));
//        if (val == null || Long.parseLong(val) < CommCons.COMM_CAPTCHA_VER_CIDE_VER_TIME) {
//            return false;
//        }
//        return true;
//	}
//
//
//
//}
